{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.ensemble import VotingRegressor\n",
    "import lightgbm as lgb\n",
    "from sklearn.metrics import mean_squared_error, mean_absolute_error\n",
    "import math"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 风机数据文件名列表，后续有新的风机数据只需要添加到列表中\n",
    "# 列表内还是列表，表示同一台风机不同天数的数据\n",
    "filenames = []\n",
    "\n",
    "for i in range(1, 16):\n",
    "    if i == 9:\n",
    "        continue\n",
    "    turbine_data = [\n",
    "        '/home/duxiangyu/turbine_data/data_with_turbine_features/WuXingLing_WuXingLing0' + '{:02d}'.format(i) + '_20231105000000_20231107000000_SCADA温数据.csv', \n",
    "    ]\n",
    "    \n",
    "    filenames.append(turbine_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 风机数据列表，由每个风机数据的DataFrame组成\n",
    "df_data = []\n",
    "for turbines in filenames:\n",
    "    data = pd.DataFrame({})\n",
    "    for f in turbines:\n",
    "        data = pd.concat((data, pd.read_csv(f)), ignore_index=True, axis=0)\n",
    "    df_data.append(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>time</th>\n",
       "      <th>WuXingLing001_u</th>\n",
       "      <th>WuXingLing001_v</th>\n",
       "      <th>WuXingLing001_speed</th>\n",
       "      <th>WuXingLing001_direct</th>\n",
       "      <th>WuXingLing001_degree1</th>\n",
       "      <th>WuXingLing001_degree2</th>\n",
       "      <th>WuXingLing001_degree3</th>\n",
       "      <th>WuXingLing001_power</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2023-11-05 00:00:00</td>\n",
       "      <td>8.718864</td>\n",
       "      <td>1.396536</td>\n",
       "      <td>8.83</td>\n",
       "      <td>9.1</td>\n",
       "      <td>4.78</td>\n",
       "      <td>4.78</td>\n",
       "      <td>4.78</td>\n",
       "      <td>4034.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2023-11-05 00:00:01</td>\n",
       "      <td>8.898088</td>\n",
       "      <td>1.282234</td>\n",
       "      <td>8.99</td>\n",
       "      <td>8.2</td>\n",
       "      <td>4.97</td>\n",
       "      <td>4.98</td>\n",
       "      <td>4.97</td>\n",
       "      <td>4029.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2023-11-05 00:00:02</td>\n",
       "      <td>8.896296</td>\n",
       "      <td>1.488729</td>\n",
       "      <td>9.02</td>\n",
       "      <td>9.5</td>\n",
       "      <td>5.06</td>\n",
       "      <td>5.06</td>\n",
       "      <td>5.06</td>\n",
       "      <td>4062.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2023-11-05 00:00:03</td>\n",
       "      <td>8.975199</td>\n",
       "      <td>1.501933</td>\n",
       "      <td>9.10</td>\n",
       "      <td>9.5</td>\n",
       "      <td>5.23</td>\n",
       "      <td>5.23</td>\n",
       "      <td>5.23</td>\n",
       "      <td>4040.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2023-11-05 00:00:04</td>\n",
       "      <td>9.002548</td>\n",
       "      <td>1.636040</td>\n",
       "      <td>9.15</td>\n",
       "      <td>10.3</td>\n",
       "      <td>5.63</td>\n",
       "      <td>5.62</td>\n",
       "      <td>5.63</td>\n",
       "      <td>4103.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>172795</th>\n",
       "      <td>2023-11-06 23:59:55</td>\n",
       "      <td>5.347899</td>\n",
       "      <td>0.486697</td>\n",
       "      <td>5.37</td>\n",
       "      <td>5.2</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>696.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>172796</th>\n",
       "      <td>2023-11-06 23:59:56</td>\n",
       "      <td>5.399967</td>\n",
       "      <td>0.018850</td>\n",
       "      <td>5.40</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>663.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>172797</th>\n",
       "      <td>2023-11-06 23:59:57</td>\n",
       "      <td>5.307081</td>\n",
       "      <td>-0.176054</td>\n",
       "      <td>5.31</td>\n",
       "      <td>-1.9</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>678.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>172798</th>\n",
       "      <td>2023-11-06 23:59:58</td>\n",
       "      <td>5.196167</td>\n",
       "      <td>-0.199617</td>\n",
       "      <td>5.20</td>\n",
       "      <td>-2.2</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>678.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>172799</th>\n",
       "      <td>2023-11-06 23:59:59</td>\n",
       "      <td>5.362641</td>\n",
       "      <td>-0.281044</td>\n",
       "      <td>5.37</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>657.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>172800 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                       time  WuXingLing001_u  WuXingLing001_v  \\\n",
       "0       2023-11-05 00:00:00         8.718864         1.396536   \n",
       "1       2023-11-05 00:00:01         8.898088         1.282234   \n",
       "2       2023-11-05 00:00:02         8.896296         1.488729   \n",
       "3       2023-11-05 00:00:03         8.975199         1.501933   \n",
       "4       2023-11-05 00:00:04         9.002548         1.636040   \n",
       "...                     ...              ...              ...   \n",
       "172795  2023-11-06 23:59:55         5.347899         0.486697   \n",
       "172796  2023-11-06 23:59:56         5.399967         0.018850   \n",
       "172797  2023-11-06 23:59:57         5.307081        -0.176054   \n",
       "172798  2023-11-06 23:59:58         5.196167        -0.199617   \n",
       "172799  2023-11-06 23:59:59         5.362641        -0.281044   \n",
       "\n",
       "        WuXingLing001_speed  WuXingLing001_direct  WuXingLing001_degree1  \\\n",
       "0                      8.83                   9.1                   4.78   \n",
       "1                      8.99                   8.2                   4.97   \n",
       "2                      9.02                   9.5                   5.06   \n",
       "3                      9.10                   9.5                   5.23   \n",
       "4                      9.15                  10.3                   5.63   \n",
       "...                     ...                   ...                    ...   \n",
       "172795                 5.37                   5.2                   0.00   \n",
       "172796                 5.40                   0.2                   0.00   \n",
       "172797                 5.31                  -1.9                   0.00   \n",
       "172798                 5.20                  -2.2                   0.00   \n",
       "172799                 5.37                  -3.0                   0.00   \n",
       "\n",
       "        WuXingLing001_degree2  WuXingLing001_degree3  WuXingLing001_power  \n",
       "0                        4.78                   4.78               4034.0  \n",
       "1                        4.98                   4.97               4029.0  \n",
       "2                        5.06                   5.06               4062.0  \n",
       "3                        5.23                   5.23               4040.0  \n",
       "4                        5.62                   5.63               4103.0  \n",
       "...                       ...                    ...                  ...  \n",
       "172795                   0.00                   0.00                696.0  \n",
       "172796                   0.00                   0.00                663.0  \n",
       "172797                   0.00                   0.00                678.0  \n",
       "172798                   0.00                   0.00                678.0  \n",
       "172799                   0.00                   0.00                657.0  \n",
       "\n",
       "[172800 rows x 9 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def wind_uv(series):\n",
    "    alpha = math.radians(series['风向'])\n",
    "    x = series['短滤波风速']\n",
    "    return x * math.cos(alpha), x * math.sin(alpha)\n",
    "\n",
    "\n",
    "for i in range(len(df_data)):\n",
    "    df_data[i]['time'] = df_data[i]['时间']\n",
    "    turbine_id = df_data[i]['设备'][0]\n",
    "    # 生成两个方向的风向并命名为“<设备名> + u”和“<设备名> + v”\n",
    "    df_data[i][turbine_id + '_u'], df_data[i][turbine_id + '_v'] = zip(*df_data[i].apply(wind_uv, axis=1))\n",
    "    df_data[i][turbine_id + '_speed'] = df_data[i]['短滤波风速']\n",
    "    df_data[i][turbine_id + '_direct'] = df_data[i]['风向']\n",
    "    df_data[i][turbine_id + '_degree1'] = df_data[i]['变桨电机角度1']\n",
    "    df_data[i][turbine_id + '_degree2'] = df_data[i]['变桨电机角度2']\n",
    "    df_data[i][turbine_id + '_degree3'] = df_data[i]['变桨电机角度3']\n",
    "    df_data[i][turbine_id + '_power'] = df_data[i]['有功功率']\n",
    "    df_data[i] = df_data[i].drop(['机舱位置', '风向', '设备', '时间', '风向1', '风向2', '短滤波风速', '变桨电机角度1', '变桨电机角度2', '变桨电机角度3', '有功功率', '塔筒驱动方向加速度', '塔筒非驱动方向加速度', '主控状态', '风机状态'], axis=1)\n",
    "\n",
    "\n",
    "df_data[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>time</th>\n",
       "      <th>WuXingLing001_u</th>\n",
       "      <th>WuXingLing001_v</th>\n",
       "      <th>WuXingLing001_speed</th>\n",
       "      <th>WuXingLing001_direct</th>\n",
       "      <th>WuXingLing001_degree1</th>\n",
       "      <th>WuXingLing001_degree2</th>\n",
       "      <th>WuXingLing001_degree3</th>\n",
       "      <th>WuXingLing001_power</th>\n",
       "      <th>WuXingLing002_u</th>\n",
       "      <th>...</th>\n",
       "      <th>WuXingLing014_degree3</th>\n",
       "      <th>WuXingLing014_power</th>\n",
       "      <th>WuXingLing015_u</th>\n",
       "      <th>WuXingLing015_v</th>\n",
       "      <th>WuXingLing015_speed</th>\n",
       "      <th>WuXingLing015_direct</th>\n",
       "      <th>WuXingLing015_degree1</th>\n",
       "      <th>WuXingLing015_degree2</th>\n",
       "      <th>WuXingLing015_degree3</th>\n",
       "      <th>WuXingLing015_power</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2023-11-05 00:00:00</td>\n",
       "      <td>8.718864</td>\n",
       "      <td>1.396536</td>\n",
       "      <td>8.83</td>\n",
       "      <td>9.1</td>\n",
       "      <td>4.78</td>\n",
       "      <td>4.78</td>\n",
       "      <td>4.78</td>\n",
       "      <td>4034.0</td>\n",
       "      <td>8.509793</td>\n",
       "      <td>...</td>\n",
       "      <td>1.00</td>\n",
       "      <td>3582.0</td>\n",
       "      <td>9.586261</td>\n",
       "      <td>-0.267769</td>\n",
       "      <td>9.59</td>\n",
       "      <td>-1.6</td>\n",
       "      <td>0.50</td>\n",
       "      <td>0.51</td>\n",
       "      <td>0.52</td>\n",
       "      <td>4455.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2023-11-05 00:00:01</td>\n",
       "      <td>8.898088</td>\n",
       "      <td>1.282234</td>\n",
       "      <td>8.99</td>\n",
       "      <td>8.2</td>\n",
       "      <td>4.97</td>\n",
       "      <td>4.98</td>\n",
       "      <td>4.97</td>\n",
       "      <td>4029.0</td>\n",
       "      <td>9.339644</td>\n",
       "      <td>...</td>\n",
       "      <td>1.03</td>\n",
       "      <td>3495.0</td>\n",
       "      <td>9.503613</td>\n",
       "      <td>-0.348482</td>\n",
       "      <td>9.51</td>\n",
       "      <td>-2.1</td>\n",
       "      <td>0.76</td>\n",
       "      <td>0.76</td>\n",
       "      <td>0.75</td>\n",
       "      <td>4321.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2023-11-05 00:00:02</td>\n",
       "      <td>8.896296</td>\n",
       "      <td>1.488729</td>\n",
       "      <td>9.02</td>\n",
       "      <td>9.5</td>\n",
       "      <td>5.06</td>\n",
       "      <td>5.06</td>\n",
       "      <td>5.06</td>\n",
       "      <td>4062.0</td>\n",
       "      <td>9.240140</td>\n",
       "      <td>...</td>\n",
       "      <td>1.01</td>\n",
       "      <td>3471.0</td>\n",
       "      <td>9.686347</td>\n",
       "      <td>-0.677335</td>\n",
       "      <td>9.71</td>\n",
       "      <td>-4.0</td>\n",
       "      <td>0.78</td>\n",
       "      <td>0.79</td>\n",
       "      <td>0.80</td>\n",
       "      <td>4215.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2023-11-05 00:00:03</td>\n",
       "      <td>8.975199</td>\n",
       "      <td>1.501933</td>\n",
       "      <td>9.10</td>\n",
       "      <td>9.5</td>\n",
       "      <td>5.23</td>\n",
       "      <td>5.23</td>\n",
       "      <td>5.23</td>\n",
       "      <td>4040.0</td>\n",
       "      <td>9.165725</td>\n",
       "      <td>...</td>\n",
       "      <td>1.01</td>\n",
       "      <td>3278.0</td>\n",
       "      <td>9.309773</td>\n",
       "      <td>0.064996</td>\n",
       "      <td>9.31</td>\n",
       "      <td>0.4</td>\n",
       "      <td>0.84</td>\n",
       "      <td>0.81</td>\n",
       "      <td>0.85</td>\n",
       "      <td>4170.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2023-11-05 00:00:04</td>\n",
       "      <td>9.002548</td>\n",
       "      <td>1.636040</td>\n",
       "      <td>9.15</td>\n",
       "      <td>10.3</td>\n",
       "      <td>5.63</td>\n",
       "      <td>5.62</td>\n",
       "      <td>5.63</td>\n",
       "      <td>4103.0</td>\n",
       "      <td>9.024939</td>\n",
       "      <td>...</td>\n",
       "      <td>1.00</td>\n",
       "      <td>3119.0</td>\n",
       "      <td>9.609063</td>\n",
       "      <td>0.134177</td>\n",
       "      <td>9.61</td>\n",
       "      <td>0.8</td>\n",
       "      <td>0.77</td>\n",
       "      <td>0.76</td>\n",
       "      <td>0.79</td>\n",
       "      <td>4057.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>172795</th>\n",
       "      <td>2023-11-06 23:59:55</td>\n",
       "      <td>5.347899</td>\n",
       "      <td>0.486697</td>\n",
       "      <td>5.37</td>\n",
       "      <td>5.2</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>696.0</td>\n",
       "      <td>4.586302</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>2174.0</td>\n",
       "      <td>6.512762</td>\n",
       "      <td>0.307134</td>\n",
       "      <td>6.52</td>\n",
       "      <td>2.7</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.00</td>\n",
       "      <td>2745.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>172796</th>\n",
       "      <td>2023-11-06 23:59:56</td>\n",
       "      <td>5.399967</td>\n",
       "      <td>0.018850</td>\n",
       "      <td>5.40</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>663.0</td>\n",
       "      <td>4.677149</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>2175.0</td>\n",
       "      <td>6.699990</td>\n",
       "      <td>0.011694</td>\n",
       "      <td>6.70</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>2753.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>172797</th>\n",
       "      <td>2023-11-06 23:59:57</td>\n",
       "      <td>5.307081</td>\n",
       "      <td>-0.176054</td>\n",
       "      <td>5.31</td>\n",
       "      <td>-1.9</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>678.0</td>\n",
       "      <td>4.796462</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>2196.0</td>\n",
       "      <td>6.648015</td>\n",
       "      <td>0.162474</td>\n",
       "      <td>6.65</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.02</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>2705.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>172798</th>\n",
       "      <td>2023-11-06 23:59:58</td>\n",
       "      <td>5.196167</td>\n",
       "      <td>-0.199617</td>\n",
       "      <td>5.20</td>\n",
       "      <td>-2.2</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>678.0</td>\n",
       "      <td>4.979515</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>2160.0</td>\n",
       "      <td>7.029829</td>\n",
       "      <td>0.049078</td>\n",
       "      <td>7.03</td>\n",
       "      <td>0.4</td>\n",
       "      <td>0.00</td>\n",
       "      <td>-0.01</td>\n",
       "      <td>0.00</td>\n",
       "      <td>2705.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>172799</th>\n",
       "      <td>2023-11-06 23:59:59</td>\n",
       "      <td>5.362641</td>\n",
       "      <td>-0.281044</td>\n",
       "      <td>5.37</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>657.0</td>\n",
       "      <td>4.929992</td>\n",
       "      <td>...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>2166.0</td>\n",
       "      <td>6.948941</td>\n",
       "      <td>0.121294</td>\n",
       "      <td>6.95</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>2752.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>172800 rows × 113 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                       time  WuXingLing001_u  WuXingLing001_v  \\\n",
       "0       2023-11-05 00:00:00         8.718864         1.396536   \n",
       "1       2023-11-05 00:00:01         8.898088         1.282234   \n",
       "2       2023-11-05 00:00:02         8.896296         1.488729   \n",
       "3       2023-11-05 00:00:03         8.975199         1.501933   \n",
       "4       2023-11-05 00:00:04         9.002548         1.636040   \n",
       "...                     ...              ...              ...   \n",
       "172795  2023-11-06 23:59:55         5.347899         0.486697   \n",
       "172796  2023-11-06 23:59:56         5.399967         0.018850   \n",
       "172797  2023-11-06 23:59:57         5.307081        -0.176054   \n",
       "172798  2023-11-06 23:59:58         5.196167        -0.199617   \n",
       "172799  2023-11-06 23:59:59         5.362641        -0.281044   \n",
       "\n",
       "        WuXingLing001_speed  WuXingLing001_direct  WuXingLing001_degree1  \\\n",
       "0                      8.83                   9.1                   4.78   \n",
       "1                      8.99                   8.2                   4.97   \n",
       "2                      9.02                   9.5                   5.06   \n",
       "3                      9.10                   9.5                   5.23   \n",
       "4                      9.15                  10.3                   5.63   \n",
       "...                     ...                   ...                    ...   \n",
       "172795                 5.37                   5.2                   0.00   \n",
       "172796                 5.40                   0.2                   0.00   \n",
       "172797                 5.31                  -1.9                   0.00   \n",
       "172798                 5.20                  -2.2                   0.00   \n",
       "172799                 5.37                  -3.0                   0.00   \n",
       "\n",
       "        WuXingLing001_degree2  WuXingLing001_degree3  WuXingLing001_power  \\\n",
       "0                        4.78                   4.78               4034.0   \n",
       "1                        4.98                   4.97               4029.0   \n",
       "2                        5.06                   5.06               4062.0   \n",
       "3                        5.23                   5.23               4040.0   \n",
       "4                        5.62                   5.63               4103.0   \n",
       "...                       ...                    ...                  ...   \n",
       "172795                   0.00                   0.00                696.0   \n",
       "172796                   0.00                   0.00                663.0   \n",
       "172797                   0.00                   0.00                678.0   \n",
       "172798                   0.00                   0.00                678.0   \n",
       "172799                   0.00                   0.00                657.0   \n",
       "\n",
       "        WuXingLing002_u  ...  WuXingLing014_degree3  WuXingLing014_power  \\\n",
       "0              8.509793  ...                   1.00               3582.0   \n",
       "1              9.339644  ...                   1.03               3495.0   \n",
       "2              9.240140  ...                   1.01               3471.0   \n",
       "3              9.165725  ...                   1.01               3278.0   \n",
       "4              9.024939  ...                   1.00               3119.0   \n",
       "...                 ...  ...                    ...                  ...   \n",
       "172795         4.586302  ...                   0.00               2174.0   \n",
       "172796         4.677149  ...                   0.00               2175.0   \n",
       "172797         4.796462  ...                   0.00               2196.0   \n",
       "172798         4.979515  ...                   0.00               2160.0   \n",
       "172799         4.929992  ...                   0.00               2166.0   \n",
       "\n",
       "        WuXingLing015_u  WuXingLing015_v  WuXingLing015_speed  \\\n",
       "0              9.586261        -0.267769                 9.59   \n",
       "1              9.503613        -0.348482                 9.51   \n",
       "2              9.686347        -0.677335                 9.71   \n",
       "3              9.309773         0.064996                 9.31   \n",
       "4              9.609063         0.134177                 9.61   \n",
       "...                 ...              ...                  ...   \n",
       "172795         6.512762         0.307134                 6.52   \n",
       "172796         6.699990         0.011694                 6.70   \n",
       "172797         6.648015         0.162474                 6.65   \n",
       "172798         7.029829         0.049078                 7.03   \n",
       "172799         6.948941         0.121294                 6.95   \n",
       "\n",
       "        WuXingLing015_direct  WuXingLing015_degree1  WuXingLing015_degree2  \\\n",
       "0                       -1.6                   0.50                   0.51   \n",
       "1                       -2.1                   0.76                   0.76   \n",
       "2                       -4.0                   0.78                   0.79   \n",
       "3                        0.4                   0.84                   0.81   \n",
       "4                        0.8                   0.77                   0.76   \n",
       "...                      ...                    ...                    ...   \n",
       "172795                   2.7                   0.00                   0.01   \n",
       "172796                   0.1                   0.00                   0.00   \n",
       "172797                   1.4                   0.02                   0.00   \n",
       "172798                   0.4                   0.00                  -0.01   \n",
       "172799                   1.0                   0.00                   0.00   \n",
       "\n",
       "        WuXingLing015_degree3  WuXingLing015_power  \n",
       "0                        0.52               4455.0  \n",
       "1                        0.75               4321.0  \n",
       "2                        0.80               4215.0  \n",
       "3                        0.85               4170.0  \n",
       "4                        0.79               4057.0  \n",
       "...                       ...                  ...  \n",
       "172795                   0.00               2745.0  \n",
       "172796                   0.00               2753.0  \n",
       "172797                   0.00               2705.0  \n",
       "172798                   0.00               2705.0  \n",
       "172799                   0.00               2752.0  \n",
       "\n",
       "[172800 rows x 113 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = df_data[0]\n",
    "\n",
    "for i in range(1, len(df_data)):\n",
    "    data = pd.merge(data, df_data[i], on=['time'], how='inner')\n",
    "\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "model_parameters = {\n",
    "    \"n_estimators\": 2500,\n",
    "    \"learning_rate\": 0.052587652,\n",
    "    \"colsample_bytree\": 0.9,\n",
    "    \"colsample_bynode\": 0.6,\n",
    "    \"lambda_l1\": 3.5,\n",
    "    \"lambda_l2\": 1.5,\n",
    "    \"max_depth\": 16,\n",
    "    \"num_leaves\": 100,\n",
    "    \"min_data_in_leaf\": 50,\n",
    "    \"objective\": \"regression_l1\",\n",
    "    \"device\": \"cpu\",\n",
    "}\n",
    "\n",
    "votingRegressor = VotingRegressor([(f'lightgbm_{i}', lgb.LGBMRegressor(**model_parameters, random_state=i)) for i in range(12)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "\n",
    "target_id = 2\n",
    "\n",
    "lgbm_data = data.copy().drop('time', axis=1)\n",
    "rolling_nums1 = [1, 2, 3]\n",
    "rolling_nums2 = [1, 2, 3, 4, 5, 6, 7]\n",
    "\n",
    "cols = lgbm_data.columns.copy()\n",
    "for col in cols:\n",
    "    if col[:13] == f'WuXingLing{target_id:03d}':\n",
    "        for rolling_num in rolling_nums2:\n",
    "            lgbm_data[str(col) + '_' + str(rolling_num)] = lgbm_data[col].shift(rolling_num)\n",
    "    else:\n",
    "        for rolling_num in rolling_nums1:\n",
    "            lgbm_data[str(col) + '_' + str(rolling_num)] = lgbm_data[col].shift(rolling_num)\n",
    "\n",
    "lgbm_data['target'] = lgbm_data[f'WuXingLing{target_id:03d}_speed'].shift(-1)\n",
    "lgbm_data = lgbm_data[:-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_data = lgbm_data[:int(len(lgbm_data) * 0.9)]\n",
    "test_data = lgbm_data[len(train_data):]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.060798 seconds.\n",
      "You can set `force_col_wise=true` to remove the overhead.\n",
      "[LightGBM] [Info] Total Bins 122348\n",
      "[LightGBM] [Info] Number of data points in the train set: 155520, number of used features: 480\n",
      "[LightGBM] [Info] Start training from score 7.910000\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.048991 seconds.\n",
      "You can set `force_col_wise=true` to remove the overhead.\n",
      "[LightGBM] [Info] Total Bins 122348\n",
      "[LightGBM] [Info] Number of data points in the train set: 155520, number of used features: 480\n",
      "[LightGBM] [Info] Start training from score 7.910000\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.039569 seconds.\n",
      "You can set `force_col_wise=true` to remove the overhead.\n",
      "[LightGBM] [Info] Total Bins 122348\n",
      "[LightGBM] [Info] Number of data points in the train set: 155520, number of used features: 480\n",
      "[LightGBM] [Info] Start training from score 7.910000\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.040126 seconds.\n",
      "You can set `force_col_wise=true` to remove the overhead.\n",
      "[LightGBM] [Info] Total Bins 122348\n",
      "[LightGBM] [Info] Number of data points in the train set: 155520, number of used features: 480\n",
      "[LightGBM] [Info] Start training from score 7.910000\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.040508 seconds.\n",
      "You can set `force_col_wise=true` to remove the overhead.\n",
      "[LightGBM] [Info] Total Bins 122348\n",
      "[LightGBM] [Info] Number of data points in the train set: 155520, number of used features: 480\n",
      "[LightGBM] [Info] Start training from score 7.910000\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.040624 seconds.\n",
      "You can set `force_col_wise=true` to remove the overhead.\n",
      "[LightGBM] [Info] Total Bins 122348\n",
      "[LightGBM] [Info] Number of data points in the train set: 155520, number of used features: 480\n",
      "[LightGBM] [Info] Start training from score 7.910000\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.039095 seconds.\n",
      "You can set `force_col_wise=true` to remove the overhead.\n",
      "[LightGBM] [Info] Total Bins 122348\n",
      "[LightGBM] [Info] Number of data points in the train set: 155520, number of used features: 480\n",
      "[LightGBM] [Info] Start training from score 7.910000\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.051437 seconds.\n",
      "You can set `force_col_wise=true` to remove the overhead.\n",
      "[LightGBM] [Info] Total Bins 122348\n",
      "[LightGBM] [Info] Number of data points in the train set: 155520, number of used features: 480\n",
      "[LightGBM] [Info] Start training from score 7.910000\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.042999 seconds.\n",
      "You can set `force_col_wise=true` to remove the overhead.\n",
      "[LightGBM] [Info] Total Bins 122348\n",
      "[LightGBM] [Info] Number of data points in the train set: 155520, number of used features: 480\n",
      "[LightGBM] [Info] Start training from score 7.910000\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.043326 seconds.\n",
      "You can set `force_col_wise=true` to remove the overhead.\n",
      "[LightGBM] [Info] Total Bins 122348\n",
      "[LightGBM] [Info] Number of data points in the train set: 155520, number of used features: 480\n",
      "[LightGBM] [Info] Start training from score 7.910000\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.043817 seconds.\n",
      "You can set `force_col_wise=true` to remove the overhead.\n",
      "[LightGBM] [Info] Total Bins 122348\n",
      "[LightGBM] [Info] Number of data points in the train set: 155520, number of used features: 480\n",
      "[LightGBM] [Info] Start training from score 7.910000\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.043075 seconds.\n",
      "You can set `force_col_wise=true` to remove the overhead.\n",
      "[LightGBM] [Info] Total Bins 122348\n",
      "[LightGBM] [Info] Number of data points in the train set: 155520, number of used features: 480\n",
      "[LightGBM] [Info] Start training from score 7.910000\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>VotingRegressor(estimators=[(&#x27;lightgbm_0&#x27;,\n",
       "                             LGBMRegressor(colsample_bynode=0.6,\n",
       "                                           colsample_bytree=0.9, device=&#x27;cpu&#x27;,\n",
       "                                           lambda_l1=3.5, lambda_l2=1.5,\n",
       "                                           learning_rate=0.052587652,\n",
       "                                           max_depth=16, min_data_in_leaf=50,\n",
       "                                           n_estimators=2500, num_leaves=100,\n",
       "                                           objective=&#x27;regression_l1&#x27;,\n",
       "                                           random_state=0)),\n",
       "                            (&#x27;lightgbm_1&#x27;,\n",
       "                             LGBMRegressor(colsample_bynode=0.6,\n",
       "                                           colsample_bytree=0.9, device...\n",
       "                                           max_depth=16, min_data_in_leaf=50,\n",
       "                                           n_estimators=2500, num_leaves=100,\n",
       "                                           objective=&#x27;regression_l1&#x27;,\n",
       "                                           random_state=10)),\n",
       "                            (&#x27;lightgbm_11&#x27;,\n",
       "                             LGBMRegressor(colsample_bynode=0.6,\n",
       "                                           colsample_bytree=0.9, device=&#x27;cpu&#x27;,\n",
       "                                           lambda_l1=3.5, lambda_l2=1.5,\n",
       "                                           learning_rate=0.052587652,\n",
       "                                           max_depth=16, min_data_in_leaf=50,\n",
       "                                           n_estimators=2500, num_leaves=100,\n",
       "                                           objective=&#x27;regression_l1&#x27;,\n",
       "                                           random_state=11))])</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" ><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;VotingRegressor<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.ensemble.VotingRegressor.html\">?<span>Documentation for VotingRegressor</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>VotingRegressor(estimators=[(&#x27;lightgbm_0&#x27;,\n",
       "                             LGBMRegressor(colsample_bynode=0.6,\n",
       "                                           colsample_bytree=0.9, device=&#x27;cpu&#x27;,\n",
       "                                           lambda_l1=3.5, lambda_l2=1.5,\n",
       "                                           learning_rate=0.052587652,\n",
       "                                           max_depth=16, min_data_in_leaf=50,\n",
       "                                           n_estimators=2500, num_leaves=100,\n",
       "                                           objective=&#x27;regression_l1&#x27;,\n",
       "                                           random_state=0)),\n",
       "                            (&#x27;lightgbm_1&#x27;,\n",
       "                             LGBMRegressor(colsample_bynode=0.6,\n",
       "                                           colsample_bytree=0.9, device...\n",
       "                                           max_depth=16, min_data_in_leaf=50,\n",
       "                                           n_estimators=2500, num_leaves=100,\n",
       "                                           objective=&#x27;regression_l1&#x27;,\n",
       "                                           random_state=10)),\n",
       "                            (&#x27;lightgbm_11&#x27;,\n",
       "                             LGBMRegressor(colsample_bynode=0.6,\n",
       "                                           colsample_bytree=0.9, device=&#x27;cpu&#x27;,\n",
       "                                           lambda_l1=3.5, lambda_l2=1.5,\n",
       "                                           learning_rate=0.052587652,\n",
       "                                           max_depth=16, min_data_in_leaf=50,\n",
       "                                           n_estimators=2500, num_leaves=100,\n",
       "                                           objective=&#x27;regression_l1&#x27;,\n",
       "                                           random_state=11))])</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>lightgbm_0</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" ><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">LGBMRegressor</label><div class=\"sk-toggleable__content fitted\"><pre>LGBMRegressor(colsample_bynode=0.6, colsample_bytree=0.9, device=&#x27;cpu&#x27;,\n",
       "              lambda_l1=3.5, lambda_l2=1.5, learning_rate=0.052587652,\n",
       "              max_depth=16, min_data_in_leaf=50, n_estimators=2500,\n",
       "              num_leaves=100, objective=&#x27;regression_l1&#x27;, random_state=0)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>lightgbm_1</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">LGBMRegressor</label><div class=\"sk-toggleable__content fitted\"><pre>LGBMRegressor(colsample_bynode=0.6, colsample_bytree=0.9, device=&#x27;cpu&#x27;,\n",
       "              lambda_l1=3.5, lambda_l2=1.5, learning_rate=0.052587652,\n",
       "              max_depth=16, min_data_in_leaf=50, n_estimators=2500,\n",
       "              num_leaves=100, objective=&#x27;regression_l1&#x27;, random_state=1)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>lightgbm_2</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" ><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">LGBMRegressor</label><div class=\"sk-toggleable__content fitted\"><pre>LGBMRegressor(colsample_bynode=0.6, colsample_bytree=0.9, device=&#x27;cpu&#x27;,\n",
       "              lambda_l1=3.5, lambda_l2=1.5, learning_rate=0.052587652,\n",
       "              max_depth=16, min_data_in_leaf=50, n_estimators=2500,\n",
       "              num_leaves=100, objective=&#x27;regression_l1&#x27;, random_state=2)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>lightgbm_3</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-5\" type=\"checkbox\" ><label for=\"sk-estimator-id-5\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">LGBMRegressor</label><div class=\"sk-toggleable__content fitted\"><pre>LGBMRegressor(colsample_bynode=0.6, colsample_bytree=0.9, device=&#x27;cpu&#x27;,\n",
       "              lambda_l1=3.5, lambda_l2=1.5, learning_rate=0.052587652,\n",
       "              max_depth=16, min_data_in_leaf=50, n_estimators=2500,\n",
       "              num_leaves=100, objective=&#x27;regression_l1&#x27;, random_state=3)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>lightgbm_4</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-6\" type=\"checkbox\" ><label for=\"sk-estimator-id-6\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">LGBMRegressor</label><div class=\"sk-toggleable__content fitted\"><pre>LGBMRegressor(colsample_bynode=0.6, colsample_bytree=0.9, device=&#x27;cpu&#x27;,\n",
       "              lambda_l1=3.5, lambda_l2=1.5, learning_rate=0.052587652,\n",
       "              max_depth=16, min_data_in_leaf=50, n_estimators=2500,\n",
       "              num_leaves=100, objective=&#x27;regression_l1&#x27;, random_state=4)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>lightgbm_5</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-7\" type=\"checkbox\" ><label for=\"sk-estimator-id-7\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">LGBMRegressor</label><div class=\"sk-toggleable__content fitted\"><pre>LGBMRegressor(colsample_bynode=0.6, colsample_bytree=0.9, device=&#x27;cpu&#x27;,\n",
       "              lambda_l1=3.5, lambda_l2=1.5, learning_rate=0.052587652,\n",
       "              max_depth=16, min_data_in_leaf=50, n_estimators=2500,\n",
       "              num_leaves=100, objective=&#x27;regression_l1&#x27;, random_state=5)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>lightgbm_6</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-8\" type=\"checkbox\" ><label for=\"sk-estimator-id-8\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">LGBMRegressor</label><div class=\"sk-toggleable__content fitted\"><pre>LGBMRegressor(colsample_bynode=0.6, colsample_bytree=0.9, device=&#x27;cpu&#x27;,\n",
       "              lambda_l1=3.5, lambda_l2=1.5, learning_rate=0.052587652,\n",
       "              max_depth=16, min_data_in_leaf=50, n_estimators=2500,\n",
       "              num_leaves=100, objective=&#x27;regression_l1&#x27;, random_state=6)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>lightgbm_7</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-9\" type=\"checkbox\" ><label for=\"sk-estimator-id-9\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">LGBMRegressor</label><div class=\"sk-toggleable__content fitted\"><pre>LGBMRegressor(colsample_bynode=0.6, colsample_bytree=0.9, device=&#x27;cpu&#x27;,\n",
       "              lambda_l1=3.5, lambda_l2=1.5, learning_rate=0.052587652,\n",
       "              max_depth=16, min_data_in_leaf=50, n_estimators=2500,\n",
       "              num_leaves=100, objective=&#x27;regression_l1&#x27;, random_state=7)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>lightgbm_8</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-10\" type=\"checkbox\" ><label for=\"sk-estimator-id-10\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">LGBMRegressor</label><div class=\"sk-toggleable__content fitted\"><pre>LGBMRegressor(colsample_bynode=0.6, colsample_bytree=0.9, device=&#x27;cpu&#x27;,\n",
       "              lambda_l1=3.5, lambda_l2=1.5, learning_rate=0.052587652,\n",
       "              max_depth=16, min_data_in_leaf=50, n_estimators=2500,\n",
       "              num_leaves=100, objective=&#x27;regression_l1&#x27;, random_state=8)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>lightgbm_9</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-11\" type=\"checkbox\" ><label for=\"sk-estimator-id-11\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">LGBMRegressor</label><div class=\"sk-toggleable__content fitted\"><pre>LGBMRegressor(colsample_bynode=0.6, colsample_bytree=0.9, device=&#x27;cpu&#x27;,\n",
       "              lambda_l1=3.5, lambda_l2=1.5, learning_rate=0.052587652,\n",
       "              max_depth=16, min_data_in_leaf=50, n_estimators=2500,\n",
       "              num_leaves=100, objective=&#x27;regression_l1&#x27;, random_state=9)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>lightgbm_10</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-12\" type=\"checkbox\" ><label for=\"sk-estimator-id-12\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">LGBMRegressor</label><div class=\"sk-toggleable__content fitted\"><pre>LGBMRegressor(colsample_bynode=0.6, colsample_bytree=0.9, device=&#x27;cpu&#x27;,\n",
       "              lambda_l1=3.5, lambda_l2=1.5, learning_rate=0.052587652,\n",
       "              max_depth=16, min_data_in_leaf=50, n_estimators=2500,\n",
       "              num_leaves=100, objective=&#x27;regression_l1&#x27;, random_state=10)</pre></div> </div></div></div></div></div><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><label>lightgbm_11</label></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-13\" type=\"checkbox\" ><label for=\"sk-estimator-id-13\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">LGBMRegressor</label><div class=\"sk-toggleable__content fitted\"><pre>LGBMRegressor(colsample_bynode=0.6, colsample_bytree=0.9, device=&#x27;cpu&#x27;,\n",
       "              lambda_l1=3.5, lambda_l2=1.5, learning_rate=0.052587652,\n",
       "              max_depth=16, min_data_in_leaf=50, n_estimators=2500,\n",
       "              num_leaves=100, objective=&#x27;regression_l1&#x27;, random_state=11)</pre></div> </div></div></div></div></div></div></div></div></div>"
      ],
      "text/plain": [
       "VotingRegressor(estimators=[('lightgbm_0',\n",
       "                             LGBMRegressor(colsample_bynode=0.6,\n",
       "                                           colsample_bytree=0.9, device='cpu',\n",
       "                                           lambda_l1=3.5, lambda_l2=1.5,\n",
       "                                           learning_rate=0.052587652,\n",
       "                                           max_depth=16, min_data_in_leaf=50,\n",
       "                                           n_estimators=2500, num_leaves=100,\n",
       "                                           objective='regression_l1',\n",
       "                                           random_state=0)),\n",
       "                            ('lightgbm_1',\n",
       "                             LGBMRegressor(colsample_bynode=0.6,\n",
       "                                           colsample_bytree=0.9, device...\n",
       "                                           max_depth=16, min_data_in_leaf=50,\n",
       "                                           n_estimators=2500, num_leaves=100,\n",
       "                                           objective='regression_l1',\n",
       "                                           random_state=10)),\n",
       "                            ('lightgbm_11',\n",
       "                             LGBMRegressor(colsample_bynode=0.6,\n",
       "                                           colsample_bytree=0.9, device='cpu',\n",
       "                                           lambda_l1=3.5, lambda_l2=1.5,\n",
       "                                           learning_rate=0.052587652,\n",
       "                                           max_depth=16, min_data_in_leaf=50,\n",
       "                                           n_estimators=2500, num_leaves=100,\n",
       "                                           objective='regression_l1',\n",
       "                                           random_state=11))])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "votingRegressor.fit(train_data.drop(f'target', axis=1), train_data[f'target'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n",
      "[LightGBM] [Warning] min_data_in_leaf is set=50, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=50\n",
      "[LightGBM] [Warning] lambda_l2 is set=1.5, reg_lambda=0.0 will be ignored. Current value: lambda_l2=1.5\n",
      "[LightGBM] [Warning] lambda_l1 is set=3.5, reg_alpha=0.0 will be ignored. Current value: lambda_l1=3.5\n"
     ]
    }
   ],
   "source": [
    "predictions = votingRegressor.predict(test_data.drop('target', axis=1))\n",
    "actual_values = test_data['target']\n",
    "mse = mean_squared_error(actual_values, predictions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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FR8fH4f7CODv72+xLPmrr76iSJEibNy4kalTp3LixAkaN25MrVq1+PXXX1mxYgX//vsvnTp1Mr9n2LBhrF27lm+//ZZVq1aRnJzMjh07bF4zIyODVq1asWnTJubMmcO+fft499138fb2pkGDBkyaNInixYubv/OhQ4cC0KdPHzZu3Mj8+fPZs2cPHTt2pGXLlhw4cACArVu30rdvX5599ll27dpF06ZNGTNmjK7vQwhReOXlvch0u3iUlWzjARqxgXl0xZt0q8flGVXIXbhwQQHqwoUL2V67du2a2rdvn7p27Zru86anKxUVpZQWh2Z/GAxKRUdrx7lDgwYN1KRJk5RSSt26dUuVKlVK/fTTT+bX69evr7p3727z/TExMWrixIkWbSNGjFD33nuvRdvEiRNVTEyMzfOkp6erYsWKqe+//97cBqhvv/3W5nvatWun+vbta34+depUFR4ertL/+7KKFSumZs6cafP99j7LrVu3VGJiogLUlClTlFJKNW7cWNWqVcviPW+99ZZ69NFHLdqOHj2qALV//3516dIl5evrq+bPn29+PS0tTQUEBKiXXnrJ6rVXrlypvLy81P79+632MzExUQUHB1u0/f3338pgMKjU1FSL9ubNm6vXXntNKaVU165dVcuWLS1e79y5c7ZzZZab320hRMGR1/eitWu185YkTR3iLqVA7aSWKs1Ji+uuXZv7a9m7f2clIzNOyjzUZo07h9r279/Ptm3b6NKlCwBFihShc+fOzJgxw3zMrl27aN68ucuvferUKQYNGkTlypUJDg4mODiYy5cv68rZ6d69O4sXL+bGjRsAfP3113Tp0sVcqXbIkCH079+fFi1a8O6773Lw4MEcz/l///d/BAUFERAQwHPPPcewYcMYOHCg+XXTqJTJjh07WLt2LUFBQeZH1apVATh48CAHDx7k5s2b1K9f3/yekJAQqlSpYrMPu3btIioqisqVKzv8XezcuROlFJUrV7boyy+//GL+3H/88YdFP4Bsz4UQd6bc3IucybFp1AiiouC8IYTOLOAjXqA+mzlFGQAMBoiO1o7LS1JnxkmODqG5Y6ht+vTppKenExkZaW5TSuHj48O5c+coWbKkuaS9Hl5eXhZTVZC9gmzv3r05ffo0kyZNIiYmBj8/P+rXr68rqbZt27ZkZGTwww8/cP/997N+/XomTJhgfn3k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HIGBgXTr1s2Dvc4DSgidvv/+e1WjRg3l5+enqlatqqZNm+bpLhVKK1euVIDav3+/p7tSKF28eFG99NJL6q677lL+/v6qfPny6o033lA3btzwdNcKlQULFqjy5csrX19fFR4erp577jl1/vx5T3erwFq7dq0Csj169eqllFIqIyNDjRgxQoWHhys/Pz/18MMPq71793q203lA6swIIYQQokCTnBkhhBBCFGgSzAghhBCiQJNgRgghhBAFmgQzQgghhCjQJJgRQgghRIEmwYwQQgghCjQJZoQQQghRoEkwI4QoEAwGA999951br9GkSRMSEhLceg0hhOtJMCOEsLBp0ya8vb1p2bKl7vfGxsYyadIk13cqB23btqVFixZWX9u8eTMGg0F2aRaiEJNgRghhYcaMGbzwwgts2LChwOyG3q9fP37++WcOHz6c7bUZM2ZQq1Yt6tSp44GeCSHyggQzQgizK1eusHDhQp555hnatGnDzJkzsx2zdOlS6tati7+/P6VKlSI+Ph7QpmgOHz7M4MGDMRgMGAwGAEaOHEmtWrUszjFp0iRiY2PNz7dv384jjzxCqVKlCA4OpnHjxrpGUtq0aUPp0qWz9ffq1assWLCAfv36kZaWRteuXYmKiiIwMJB77rmHefPm2T2vtamtEiVKWFwnNTWVzp07U7JkSUJDQ4mLi+PQoUPm15OTk3nggQcoWrQoJUqUoGHDhlaDLiGE8ySYEUKYLViwgCpVqlClShV69OhBYmIimbdv++GHH4iPj+fxxx/nt99+Y82aNdStWxeApKQkoqKiGD16NCdOnODEiRMOX/fSpUv06tWL9evXs2XLFipVqkTr1q25dOmSQ+8vUqQIPXv2ZObMmRb9XbRoETdv3qR79+5cv36d++67j2XLlvG///2PAQMG8NRTT7F161aH+5nV1atXadq0KUFBQaxbt44NGzYQFBREy5YtuXnzJunp6TzxxBM0btyYPXv2sHnzZgYMGGAO9IQQrlHE0x0QQuQf06dPp0ePHgC0bNmSy5cvs2bNGnM+ytixY+nSpQujRo0yv+fee+8FICQkBG9vb4oVK0Z4eLiu6zZr1szi+dSpUylZsiS//PILbdq0cegcffv25YMPPiA5OZmmTZsC2hRTfHw8JUuWpGTJkgwdOtR8/AsvvMCKFStYtGgRDz74oK7+msyfPx8vLy++/PJLc4CSmJhIiRIlSE5Opm7duly4cIE2bdpQoUIFAKpVq+bUtYQQtsnIjBACgP3797Nt2za6dOkCaKMdnTt3ZsaMGeZjdu3aRfPmzV1+7VOnTjFo0CAqV65McHAwwcHBXL58WVfOTtWqVWnQoIG5vwcPHmT9+vX07dsXAKPRyNixY6lZsyahoaEEBQWxatWqXOUF7dixg7///ptixYoRFBREUFAQISEhXL9+nYMHDxISEkLv3r157LHHaNu2LZMnT9Y1YiWEcIyMzAghAG1UJj09ncjISHObUgofHx/OnTtHyZIlCQgI0H1eLy8vi6kfgFu3blk87927N6dPn2bSpEnExMTg5+dH/fr1uXnzpq5r9evXj+eff55PP/2UxMREYmJizMHX+PHjmThxIpMmTeKee+6haNGiJCQk2L2GwWCw2/eMjAzuu+8+vv7662zvDQsLA7SRmhdffJEVK1awYMEC3nzzTX766Sfq1aun67MJIWyTkRkhBOnp6cyaNYvx48eza9cu82P37t3ExMSYb9Y1a9ZkzZo1Ns/j6+uL0Wi0aAsLC+PkyZMWQcGuXbssjlm/fj0vvvgirVu35u6778bPz48zZ87o/hydOnXC29ubuXPn8tVXX9GnTx/z9M/69euJi4ujR48e3HvvvZQvX54DBw7YPV9YWJjFSMqBAwe4evWq+XmdOnU4cOAApUuXpmLFihaP4OBg83G1a9fmtddeY9OmTdSoUYO5c+fq/mxCCNskmBFCsGzZMs6dO0e/fv2oUaOGxaNDhw5Mnz4dgBEjRjBv3jxGjBjBH3/8wd69e3n//ffN54mNjWXdunWkpqaag5EmTZpw+vRp3n//fQ4ePMinn37K8uXLLa5fsWJFZs+ezR9//MHWrVvp3r27U6NAQUFBdO7cmddff53jx4/Tu3dvi2v89NNPbNq0iT/++IOBAwdy8uRJu+dr1qwZn3zyCTt37uTXX39l0KBB+Pj4mF/v3r07pUqVIi4ujvXr15OSksIvv/zCSy+9xLFjx0hJSeG1115j8+bNHD58mFWrVvHXX39J3owQLibBjBCC6dOn06JFC4vRBJP27duza9cudu7cSZMmTVi0aBFLly6lVq1aNGvWzGI10OjRozl06BAVKlQwT7NUq1aNKVOm8Omnn3Lvvfeybds2i0Rc0BJ1z507R+3atXnqqad48cUXKV26tFOfpV+/fpw7d44WLVpw1113mdvfeust6tSpw2OPPUaTJk0IDw/niSeesHuu8ePHEx0dzcMPP0y3bt0YOnQogYGB5tcDAwNZt24dd911F/Hx8VSrVo2+ffty7do1ihcvTmBgIH/++Sft27encuXKDBgwgOeff56BAwc69dmEENYZVNYJYSGEEEKIAkRGZoQQQghRoEkwI4QQQogCTYIZIYQQQhRoEswIIYQQokCTYEYIIYQQBZoEM0IIIYQo0CSYEUIIIUSBJsGMEEIIIQo0CWaEEEIIUaBJMCOEEEKIAk2CGSGEEEIUaBLMCCGEEKJA+3/7cjSFbHjebQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 假设 predictions 和 actual_values 已经定义\n",
    "# predictions 是模型的预测值，actual_values 是真实值\n",
    "\n",
    "\n",
    "length = 1000\n",
    "actual_values = actual_values[:length]\n",
    "predictions = predictions[:length]\n",
    "\n",
    "# 创建散点图\n",
    "plt.scatter(actual_values, predictions, color='blue', label='Actual vs Predicted')\n",
    "\n",
    "# 添加标签和标题\n",
    "plt.xlabel('Actual Values')\n",
    "plt.ylabel('Predicted Values')\n",
    "plt.title('Actual vs Predicted Values')\n",
    "\n",
    "# 添加对角线，用于比较完美预测的情况\n",
    "plt.plot([min(actual_values), max(actual_values)], [min(actual_values), max(actual_values)], linestyle='--', color='red', linewidth=2, label='Perfect Prediction')\n",
    "\n",
    "# 显示图例\n",
    "plt.legend()\n",
    "\n",
    "# 显示图形\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fbff99264c0>]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "length = 50\n",
    "x = [i for i in range(length)]\n",
    "plt.plot(x, predictions[:length], color=\"red\")\n",
    "plt.plot(x, actual_values[:length])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.045702132966270695"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mse"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.1399978245371036"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_absolute_error(actual_values, predictions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_data.drop(f'WuXingLing{target_id:03d}_speed', axis=1).to_csv(\"test.csv\", index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_data[f'WuXingLing{target_id:03d}_speed'].to_csv(\"target.csv\", index=False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "gru",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.19"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
